package com.softtown.modules.organization.dao;

import com.softtown.common.dao.BaseDao;
import com.softtown.modules.organization.entity.CompOrgEmplEntity;
import com.softtown.modules.organization.entity.CompOrgHstEmplEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author: Dingyayong
 * @Date: 2019/6/4 10:48
 * @Description:
 */
@Mapper
public interface CompOrgEmplDao extends BaseDao<CompOrgEmplEntity> {

    /****
     * 根据id 找信息
     * @param id id
     * @return CompOrgEmplEntity
     */
    CompOrgEmplEntity getById(Long id);

    /**
     * 更新员工信息
     * @param compOrgEmplEntity
     * @return boolean
     * @Author fuming
     * @Date 2020/5/26 15:36
     */
    boolean updateOrgEmpl(CompOrgEmplEntity compOrgEmplEntity);

    /**
     * 根据员工ID和公司ID来查找员工表里的部门ID
     * @param id
     * @param compId
     * @return java.util.List<java.lang.Long>
     * @Author fuming
     * @Date 2020/5/26 15:37
     */
    List<Long> getDeptIdByEmplIdAndCompId(@Param("id") Long id, @Param("compId") Long compId);

    /**
     * 根据公司ID查找出员工变更履历信息
     * @param compId
     * @return java.util.List<com.softtown.modules.organization.entity.CompOrgHstEmplEntity>
     * @Author fuming
     * @Date 2020/5/26 15:37
     */
    List<CompOrgHstEmplEntity> getEmplHstListByCompId(Long compId);

    /****
     * 根据公司id 找信息
     * @param compId compId
     * @return CompOrgEmplEntity
     */
    List<CompOrgEmplEntity> findByCompId(Long compId);

    /**
     * 获取已有收款信息的员工id
     * @param compId
     * @return
     */
    List<Long> getEmplListbyBene(Long compId);

    /**
     * 查询没有收款信息的员工
     * @param compId
     * @param emplIds
     * @return
     */
    List<CompOrgEmplEntity> findByEmplListBene(@Param("compId") Long compId,
        @Param("emplIds") List<Long> emplIds);

    /**
     * 员工信息修改接口
     * @param compOrgEmplEntity
     * @return boolean
     * @Author fuming
     * @Date 2020/5/26 15:38
     */
    boolean updateEmplInfos(CompOrgEmplEntity compOrgEmplEntity);

    /**
     * 员工信息查询和根据条件查询以及多表分页
     * @param compId
     * @param pram
     * @param emplId
     * @return java.util.List<com.softtown.modules.organization.entity.CompOrgEmplEntity>
     * @Author fuming
     * @Date 2020/5/26 15:38
     */
    List<CompOrgEmplEntity> getEmployeeListByConditions(@Param("compId") Long compId, @Param("pram") String pram, @Param("emplId") Long emplId);

    /**
     * 描述
     *
     * @param compId
     * @param userId
     * @return CompOrgEmplEntity
     * @author Dingyayong
     * @date 2019-08-22 17:52
     */
    CompOrgEmplEntity selectByCompIdAndUserId(@Param("compId") Long compId, @Param("userId") Long userId);

    /**
     * 根据公司ID和用户ID查找员工信息
     * @param companyId
     * @param userId
     * @param pram
     * @return com.softtown.modules.organization.entity.CompOrgEmplEntity
     * @Author fuming
     * @Date 2020/5/26 15:39
     */
    CompOrgEmplEntity selectEmplListByCompIdAndUserId(@Param("compId") Long companyId, @Param("userId") Long userId, @Param("pram") String pram);

    /**
     * 根据公司ID查找出所有员工信息和通过员工ID找出相对应的用户ID
     * @param companyId
     * @return java.util.List<com.softtown.modules.organization.entity.CompOrgEmplEntity>
     * @Author fuming
     * @Date 2020/5/26 15:38
     */
    List<CompOrgEmplEntity> selectUserIdByCompId(Long companyId);

    /**
     * 通过公司id和员工id查出员工的部门名称信息
     *
     * @param compId
     * @param id
     * @return java.lang.String
     * @author fuming
     * @date 2019/11/9 17:21
     */
    String selectEmplDeptName(@Param("compId") Long compId, @Param("id") Long id);

    /**
     * 查询公司员工信息
     *
     * @param compId 公司id
     * @param pram   搜索条件
     * @return java.util.List<com.softtown.modules.organization.entity.CompOrgEmplEntity>
     * @author fuming
     * @date 2019/11/25 19:47
     */
    List<CompOrgEmplEntity> selectEmployeeList(@Param("compId") Long compId, @Param("pram") String pram);

    /**
     * 根据公司id和员工id查找员工信息
     *
     * @param compId 公司id
     * @param id     员工id
     * @return com.softtown.modules.organization.entity.CompOrgEmplEntity
     * @Author fuming
     * @Date 2020/1/20 13:55
     */
    CompOrgEmplEntity selectCompOrgEmplByCompIdAndId(@Param("compId") Long compId, @Param("id") Long id);
}
